/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package documentadorrepositorio.apresentacao;

import documentadorrepositorio.fabricaRepositorio.FabricaRepositorio;
import documentadorrepositorio.fabricaRepositorio.NomeRepositorio;
import documentadorrepositorio.interfaceGrafica.SelecionarCaminho;
import documentadorrepositorio.repositorio.GerenciadorRepositorioSVN;
import documentadorrepositorio.repositorio.IGerenciadorRepositorio;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;

/**
 *
 * @author DEP
 */
public class SelecionarCaminhoApresentacao
{

    private SelecionarCaminho frame;
    private static SelecionarCaminho frameStatic;
    private DefaultListModel model;

    public SelecionarCaminhoApresentacao()
    {
        frame = new SelecionarCaminho(null, true);
        adicionaListeners();
        frameStatic = frame;

        carregarList();
        this.frame.setLocationRelativeTo(null);
        this.frame.setVisible(true);
    }

    private void adicionaListeners()
    {
        this.frame.getBtnFechar().addActionListener(new ActionListener()
        {

            public void actionPerformed(ActionEvent e)
            {
                btnFecharPerformed(e);
            }
        });
        this.frame.getBtnObterDados().addActionListener(new ActionListener()
        {

            public void actionPerformed(ActionEvent e)
            {
                btnObterDadosPerformed(e);
            }
        });
    }

    private void btnFecharPerformed(ActionEvent evt)
    {
        this.frame.setVisible(false);
        System.exit(0);
    }

    public static SelecionarCaminho getFrame()
    {
        return frameStatic;
    }

    private void btnObterDadosPerformed(ActionEvent evt)
    {
        try
        {
            if (this.frame.getTxtCaminho().getText().isEmpty())
            {
                throw new Exception("Informe o caminho do repositório.");
            } else
            {
                IGerenciadorRepositorio gerenciadorRepositorio = FabricaRepositorio.getInstance().create(NomeRepositorio.getInstance().getSigla(this.frame.getListRepositorio().getSelectedValue().toString()));
                gerenciadorRepositorio.iniciaGerenciador(frame.getTxtCaminho().getText(),
                        frame.getTxtUsuario().getText(),
                        frame.getTxtSenha().getText());

                this.frame.setVisible(false);
                CarregandoDadosApresentacao p = new CarregandoDadosApresentacao(gerenciadorRepositorio);
                //this.frame.dispose();
            }
        } catch (Exception ex)
        {
            JOptionPane.showMessageDialog(frame, ex.getMessage(), "Documentador de Repositório", JOptionPane.OK_OPTION);
        }
    }

    private void carregarList()
    {
        try
        {
            model = new DefaultListModel();
            ArrayList<Object> listaRepositorio = NomeRepositorio.getInstance().listaRepositorios();
            for (Object g : listaRepositorio)
            {
                model.addElement(NomeRepositorio.getInstance().getNome(g.toString()));
            }
            this.frame.getListRepositorio().setModel(model);
            this.frame.getListRepositorio().setSelectedIndex(0);
        } catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }
}
